package com.pipayshop.domain;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;

import java.io.Serializable;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.pipayshop.config.JsonMapTypeHandler;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.poi.hpsf.Decimal;
import org.hibernate.validator.constraints.Length;

/**
* 
* @TableName sku
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("sku")
public class Sku implements Serializable {

    /**
    * 主键
    */
    @NotNull(message="[主键]不能为空")
    @ApiModelProperty("主键")
    private Integer id;
    /**
    * 库存
    */
    @NotNull(message="[库存]不能为空")
    @ApiModelProperty("库存")
    private Integer inventory;
    /**
    * 商品id
    */
    @NotBlank(message="[商品id]不能为空")
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("商品id")
    @Length(max= 255,message="编码长度不能超过255")
    private String commodityId;
    /**
    * 商品规格
    */
    @NotBlank(message="[商品规格]不能为空")
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("商品规格")
    @Length(max= 255,message="编码长度不能超过255")
    @TableField(typeHandler = JsonMapTypeHandler.class)
    private Map<String, String> commoditySpec; // 定义为 Map
    /**
    * 价格
    */
    @NotNull(message="[价格]不能为空")
    @ApiModelProperty("价格")
    private BigDecimal price;
    /**
    * 商品照片
    */
    @NotBlank(message="[商品照片]不能为空")
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("商品照片")
    @Length(max= 255,message="编码长度不能超过255")
    private String image;


    /**
    * 原价
    */
    private BigDecimal  orignPrice;

    /**
    * pi积分
    */
    private BigDecimal  piPrice;

    /**
    * 磨损
    */
    private Integer degreeLose;
    /**
    * 创建时间
    */
    @NotNull(message="[创建时间]不能为空")
    @ApiModelProperty("创建时间")
    private Date createTime;
    /**
    * 修改时间
    */
    @NotNull(message="[修改时间]不能为空")
    @ApiModelProperty("修改时间")
    private Date updateTime;
    /**
    * 0：正常 1：逻辑删除 2：物理删除
    */
    @NotNull(message="[0：正常 1：逻辑删除 2：物理删除]不能为空")
    @ApiModelProperty("0：正常 1：逻辑删除 2：物理删除")
    private Integer delFlag;



}
